<?php
/**
 * 语言包管理
 *
 * @package         YDCMS
 * @author          QQ:644157559 <644157559@qq.com>
 * @version         $Id: LanguageModel.class.php v1.0 2014-06-23 17:27:03 $
 */
namespace Admin\Model;

class LanguageModel extends CommonModel{
    protected $_validate = array(
        array("theme", "require", "语言名称必须填写！", 1),
        array("status", "0,1", "状态选择有误！", 1, "in")
    );
    
    /**
     * Title验证规则
     * @var type 
     */
    protected $validateLangTitle = array(
        array("title", "require", "语言名称必须填写！", 1),
        array('title', 'isNotExistSpecialChar', '语言名称不能包含特殊字符！', 1, 'function'),
        array('title', '1, 24', '语言名称长度只能少于24个字符！', 1, 'length', 3),
        array("title", "uniqueTitle", "语言名称已存在！", 1, "callback"),
    );
    
    /**
     * 语言标识验证规则
     * @var type 
     */
    protected $validateLangNid = array(
        array('nid', 'require', '语言标识必须填写！', 1, 'regex', 1),
        array('nid', '1, 24', '语言标识长度只能少于24个字符！', 1, 'length', 1),
        array('nid', 'isLower', '语言标识只能由"-"、a~z组成！', 1, 'function', 1),
        array('nid', 'uniqueNid', '语言标识已经存在！', 1 , 'callback', 1),
    );
   
    /**
     * 检查语言名称
     * @param type $title
     */
    public function uniqueTitle($title) {
        $this->isUnique("title", $title);
    }
    
    /**
     * 检查语言名称是否可用
     * @param  array  $lang  Lang数组
     * @param  int    $id    需要更新模型的id
     * @return boolean       是否可用
     */
    public function isValidTitle($lang, $id) {
        return $this->validateConditions($this->validateLangTitle, $lang, $id);
    }
    
    /**
     * 语言是否可用
     * @param  array   $langs Lang数组
     * @param  int     $id    需要更新语言的id
     * @return boolean        是否可用
     */
    public function isValid($langs, $id) {
        $validate = array_merge($this->validateLangTitle, $this->validateLangNid);
        
        return $this->validateConditions($validate, $langs, $id);
    }
    /**
     * 检查语言标识
     * @param type $nid
     */
    public function uniqueNid($nid) {
        $this->isUnique("nid", $nid);
    }
    
    protected function preUpdate($id) {
        $this->setUpdateSession('update_id', $id);
    }

    protected function afterUpdate() {
        $this->unsetUpdateSession('update_id');
    }
}